package org.mayanjun.code.dalmeta.query;

import java.io.Serializable;
import java.util.List;

/**
 * Query
 * @author mayanjun
 * @since 0.0.1
 */
public interface Query<T extends Serializable> extends Serializable {

	Query<T> addComparator(Comparator comparator);
	Query<T> removeComparator(Comparator comparator);
	Query<T> addAllComparators(List<Comparator> comparators);

	List<Comparator> getComparators();

	Query<T> setComparators(List<Comparator> comparators);

	int getLimit();

	Query<T> setLimit(int limit);

	Sort getSort();

	Query<T> setSort(Sort sort);

	Class<T> getBeanType();

	Query<T> setBeanType(Class<T> beanType);

	List<String> getExcludeFields();

	Query<T> setExcludeFields(List<String> excludeFields);

	List<String> getIncludeFields();

	Query<T> setIncludeFields(List<String> includeFields);

}